﻿using System;

namespace ReadyApps.Common
{
    /// <summary>
    /// Represents the component choices which may be traced by the tracing
    /// system.
    /// </summary>
    [Flags]
    public enum TraceComponent
    {
        /// <summary>
        /// No components.
        /// </summary>
        None = 0x0000,

        /// <summary>
        /// All components.
        /// </summary>
        All = 0xFFFF,

        /// <summary>
        /// The display class.
        /// </summary>
        Display = 0x0001,

        /// <summary>
        /// The controller class.
        /// </summary>
        Controller = 0x0002,

        /// <summary>
        /// The data provider for the system.
        /// </summary>
        DataProvider = 0x0004,

        /// <summary>
        /// The internal privilege management component.
        /// </summary>
        SecurityManager = 0x0008,

        /// <summary>
        /// The URL managment component.
        /// </summary>
        UrlManager = 0x0010,

        /// <summary>
        /// The role abstraction component.
        /// </summary>
        RoleManager = 0x0020,

        /// <summary>
        /// The normal page view.
        /// </summary>
        NormalView = 0x0040,

        /// <summary>
        /// The edit page view.
        /// </summary>
        EditView = 0x0080,

        /// <summary>
        /// The revision list view.
        /// </summary>
        RevisionListView = 0x0100,

        /// <summary>
        /// The page revision view.
        /// </summary>
        RevisionView = 0x0200,

        /// <summary>
        /// The effective permissions subcomponent.
        /// </summary>
        EffectivePermissions = 0x0400,

        /// <summary>
        /// The data provider factory.
        /// </summary>
        DataProviderFactory = 0x0800,

        /// <summary>
        /// The create new page view.
        /// </summary>
        NewPageView = 0x1000
    }
}
